In teleconferencing or audio/video chatting, background noise is an unwanted signal that is transmitted together with the wanted speech signal. Typical speech denoising or speech enhancement techniques model the noise signal with a single spectral profile that is estimated from several clean noise signal frames beforehand. When the background noise is non-stationary (e.g., having a noise spectrum that changes significantly and rapidly over time, such as keyboard noise, sirens, eating chips, baby crying, etc.), however, as is often the case, such techniques perform poorly as the noise characteristic cannot be modeled well by a single spectrum.